\chapter{Description des extensions possibles}
\paragraph{}Il est possible d'imaginer un certain nombre d'extensions à ce projet. 
\section{Personnalisation de la matrice et sa formule}
\paragraph{}La matrice de convolution et le traitement fait avec cette matrice ne changent pas dans le projet. Pour les changer, il faut obligatoirement modifier le code que nous avons produit. Nous pourrions le rendre plus générique en permettant à l'utilisateur de donner sa propre formule pour personnaliser le traitement. En effet chaque problème aura une matrice et une formule de calcul différentes. Il serait donc préférable d'isoler ces deux parties du reste du code.
\section{Gestion des bords}
\paragraph{}Notre code ne tient pas compte des bords de l'image en entrée. C'est à dire que le calcul s'arrête une fois le bord de l'image atteint. Il serait intéressant de proposer différentes gestions de bords en standard ou de laisser la possibilité à l'utilisateur de les gérer lui-même. Et pourquoi pas les deux à la fois, pour proposer une gestion standard avec par exemple une gestion de type tore, effet miroir ou rebonds, tout en laissant une ouverture pour que l'utilisateur puisse, s'il le souhaite, implanter sa propre gestion.
\section{Les problèmes qui peuvent se réduire à la convolution}
\paragraph{}Les deux étapes précédentes sont indispensables pour étendre encore le projet. Nous ne traitons actuellement que des images. Cependant plusieurs problèmes peuvent être traiter avec une matrice de convolution ``améliorée''. Cela implique nécessairement une certaine généricité quant à la formule et la matrice de convolution avec laquelle sera appliqué le traitement. Cela offrirait la possibilité de traiter facilement d'autres problèmes de type écoulement de fluide, diffusion de chaleur ou encore séries de Fourrier. 
\section{Amélioration des performances}
\paragraph{}CUDA offre énormément de possibilités en terme de programmation et d'efficacité cependant la documentation est très succincte et parfois inexistante sur certains points. Nous n'avons donc pas pu tester dans le temps imparti toutes les optimisations possibles en CUDA. D'autant qu'elles peuvent imposer une refonte complète des algorithmes de découpage des données pour tester l'efficacité des différents registres et mémoires disponibles.
\paragraph{}Depuis la version 4.0 de CUDA, il est possible de répartir les calculs sur plusieurs cartes graphiques. La machine de test ``Opteron-CUDA'' mise à notre disposition dispose de deux cartes {\Large \textsc{nVidia}} GTX 480, elle permettrait de tester l'efficacité des calculs sur plusieurs cartes simultanément. 
